import axios from "axios";
import NProgress from "nprogress";  // 进度条
import "nprogress/nprogress.css";   // 进度条样式

// 创建axios实例
const request = axios.create({ timeout: '4000' })

// 请求拦截器
request.interceptors.request.use(
  (config) => {
    // 开启进度条
    NProgress.start()
    return config
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  (response) => {
    //关闭进度条
    NProgress.done();
    //对于我们的成功来说,不但响应状态码是200,并且请求回来的数据中的后端给的code码也是200才可以
    //举个例子:登录的时候返回密码错误,但是响应状态码是200,但是数据中code是207,这就不是我们想要的
    if (response.data.code === 200) {
      //当拿到我们想要的数据后,直接返回想要的数据(response.data只是后台返回的整体数据,我们想要的数据在response.data.data)
      return response.data.data
    }
    return Promise.reject({ message: response.data.message })
  },
  (error) => {
    //关闭进度条
    NProgress.done();
    return Promise.reject(error)
  }
)

export default request